home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / libs / MultiReq.lha / MultiReq / ASM / include / libraries / multireq.i < prev   
Text File  |  1992-11-12  |  12KB  |  358 lines

  1. *********************************************************
  2. *                            *
  3. *  multireq.i -- definition of library structures    *
  4. *                            *
  5. *  Copyright (c) 1992 by Andreas Krebs            *
  6. *                            *
  7. *********************************************************
  8.  
  9.     IFND    LIBRARIES_MULTIREQ_I
  10. LIBRARIES_MULTIREQ_I    SET    1
  11.  
  12.     IFND    EXEC_TYPES_I
  13.     INCLUDE    "exec/types.i"
  14.     ENDC    ; EXEC_TYPES_I
  15.  
  16.     IFND    EXEC_LIBRARIES_I
  17.     INCLUDE    "exec/libraries.i"
  18.     ENDC    ; EXEC_LIBRARIES_I
  19.  
  20.     IFND    INTUITION_INTUITION_I
  21.     INCLUDE    "intuition/intuition.i"
  22.     ENDC    ; INTUITION_INTUITION_I
  23.  
  24. *********************************
  25. *    data structures        *
  26. *********************************
  27.  
  28. ;--------------------------------------------------------------------------
  29. ;
  30. ; The FileList structure contains a complete Directory with all informations
  31. ;
  32. ; The following structures contain some informations, that may never be
  33. ; changed by the user, and other informations, that can be changed.
  34. ; The structure elements mark with "CSU - Can be Set by User", can be set
  35. ; all others should NEVER be changed !!!
  36. ; All structure elements with the ending Buff are pointers to a already
  37. ; allocated string buffer, so do not change this pointers. Instead use
  38. ; StrCpy to fill this buffers with a string.
  39. ;
  40. ;--------------------------------------------------------------------------
  41.  
  42.  
  43.   STRUCTURE    FileList,0
  44.       APTR    flt_ListKey        ;Key to mem for entries of list
  45.  
  46.       APTR    flt_FileList        ;Ptr to first entry in list
  47.     APTR    flt_FileListPos        ;Current pos of ptr in list mem
  48.     APTR    flt_FileListEnd        ;end of list mem
  49.  
  50.     APTR    flt_FirstShown        ;Ptr to first shown (not hidden !) entry in list
  51.     APTR    flt_FirstDisplayed    ;Ptr to first displayed entry
  52.     APTR    flt_SelectedEntry    ;Ptr to selected file
  53.     APTR    flt_Lock        ;filelock for list (if still reading or stopped)
  54.     APTR    flt_FInfo        ;ptr to FInfoBlock structure
  55.     APTR    flt_DrawerBuff        ;Buffer containing the Drawer        [CSU]
  56.     UWORD    flt_AutoRead        ;automatically read in dir        [CSU]
  57.     UWORD    flt_DirNum        ;Number of dirs read in
  58.     UWORD    flt_FileNum        ;Number of files read in
  59.   LABEL    flt_SIZEOF
  60.  
  61. ;    possible Flags for AutoRead
  62.  
  63. NO_AUTOREAD    EQU    0    ;don't read in dir automatically
  64. DO_AUTOREAD    EQU    1    ;automatically read in dir, when filelist activated
  65.  
  66.  
  67. ;--------------------------------------------------------------------------
  68. ;
  69. ;    The FileReq structure as returned from InitFileReq
  70. ;
  71. ;--------------------------------------------------------------------------
  72.  
  73.   STRUCTURE    FileReq,0
  74.     APTR    fr_TitleString        ;ptr to title string or NULL (no title) [CSU]
  75.     APTR    fr_OkayString        ;ptr to string for okay-gadget or NULL
  76.                     ;("Okay" used as text)            [CSU]
  77.     UWORD    fr_LeftEdge        ;leftedge of filereqwindow         [CSU]
  78.     UWORD    fr_TopEdge        ;topedge of filereqwindow         [CSU]
  79.     UWORD    fr_Width        ;width of window (NOT USED YET)
  80.     UWORD    fr_Height        ;height of window (NOT USED YET)
  81.     APTR    fr_AddInfo        ;additional info (NOT USED YET)
  82.  
  83.     APTR    fr_FileNameBuff        ;when returning this buffer contains the
  84.                     ;active filename with full path
  85.     UWORD    fr_ReturnStatus        ;MCD_OKAY, MCD_CANCEL, or stuff like that
  86.     UBYTE    fr_ActiveList        ;0 (list 1) or 1 (list 2)         [CSU]
  87.     UBYTE    fr_ShowInfo        ;show or hide ".info"-files         [CSU]
  88.  
  89.     APTR    fr_BaseAddress        ;Base address of data memory (NEVER change !!!)
  90.  
  91.     APTR    fr_FileBuff        ;buffer containing filename         [CSU]
  92.     APTR    fr_ShowBuff        ;buffer with a wildcard string for the files
  93.                     ;to be shown (e.g: "*.c|*.h")        [CSU]
  94.     APTR    fr_HideBuff        ;buffer with wildcard string for the files
  95.                     ;to be hidden                 [CSU]
  96.     UWORD    fr_FileListNum        ;number of filelists (this version only
  97.                     ;supports 2 filelists)
  98.  
  99.     STRUCT    fr_FileList1,flt_SIZEOF    ;First filelist
  100.     STRUCT    fr_FileList2,flt_SIZEOF    ;Second filelist
  101.   LABEL    fr_SIZEOF
  102.  
  103. ;    The possible ReturnStatus flags
  104.  
  105. RET_ERROR    EQU    0    ;something went wrong, (no FilReq structure or
  106.                 ;unable to open window)
  107.  
  108. RET_CANCEL    EQU    1    ;Cancel-Gadget selected
  109. RET_CLOSE    EQU    2    ;Close-Gadget selected
  110. RET_FILE    EQU    3    ;RETURN pressed in File-Gadget
  111. RET_DOUBLE    EQU    4    ;DoubleClick on File-Entry
  112. RET_OKAY    EQU    5    ;Okay-Gadget selected
  113.  
  114.  
  115. ;    The possible flags for ShowInfo
  116.  
  117. HIDE_INFO    EQU    0    ;Hide all files ending with ".info"
  118. SHOW_INFO    EQU    1    ;don't hide ".info" files
  119.  
  120. ;------------------------------------------------------------------------------
  121. ;
  122. ;    The MRText structure, usefull if you have many texts of the same font
  123. ;    and style, cause its shorter than IntuiText
  124. ;
  125. ;------------------------------------------------------------------------------
  126.  
  127.   STRUCTURE    MRText,0
  128.     UWORD    mrt_LeftEdge        ;left position of text
  129.     UWORD    mrt_TopEdge        ;top position of text
  130.     UBYTE    mrt_Pen            ;FrontPen of text
  131.     UBYTE    mrt_Length        ;Length of text, avoids StrLen to be called
  132.     APTR    mrt_Text        ;ptr to text string
  133.   LABEL    mrt_SIZEOF
  134.  
  135. ;
  136. ;    the possible styles for the DrawGadgetBorder-function
  137. ;
  138.  
  139. NOBORDER    EQU    0    ;draw no border
  140. BOOLBORDER    EQU    1    ;draw a simple 3D-Button
  141. FILLEDBORDER    EQU    2    ;draw a filled 3D-Button
  142. STRBORDER    EQU    3    ;draw a StringGadget-Border
  143. FILLEDSTRBORDER    EQU    4    ;draw a filled StringGadget-Border
  144.  
  145. CYCLEIMG    EQU    $80    ;draw a cycle image
  146.  
  147.  
  148. ; The DrawGadgetBorder-function uses the UserData part of the Gadget structure
  149. ; for some additional information in the following way
  150. ; 1. Byte: Style, 2. Byte: Pen1, 3. Byte: Pen2, 4.Byte: FillPen (if used)
  151. ;
  152. ; The following MACRO helps you to set this value
  153.  
  154. BORDER    MACRO
  155.     dc.b    \1,\2,\3,\4
  156.     ENDM
  157.  
  158.  
  159. ;    the MultiReqBase structure is almost a normal LibBase structure
  160.  
  161.   STRUCTURE    MultiReqBase,LIB_SIZE
  162.     UBYTE    mrb_Flags        ;some flags for lib
  163.     UBYTE    mrb_pad            ;make EVEN address
  164.  
  165.     APTR    mrb_SegList        ;bptr to first segement of library
  166.   LABEL    mrb_SIZEOF
  167.  
  168.  
  169.  
  170. *************************************************************************
  171. *    All following structures are private ! DO NOT USE THEM !!!!    *
  172. *************************************************************************
  173.  
  174.     IFD    MULTIREQ_PRIVATE
  175.  
  176. ;    if you wish to use the following structures (????) add the following
  177. ;    command before INCLUDE "libraries/multireq.i":
  178. ;    MULTIREQ_PRIVATE    SET    1
  179.  
  180.  
  181. ;    The FileEntry-structure contains a file or directory
  182.  
  183.  
  184.   STRUCTURE    FileEntry,0
  185.     APTR    fe_NextEntry        ;Next entry in list
  186.     APTR    fe_LastEntry        ;Last entry in list
  187.     APTR    fe_ImageData        ;or fe_FileSize for files
  188.     UBYTE    fe_Pen            ;textcolor of entry (also as type ID)
  189.     UBYTE    fe_Length        ;length of name
  190.     APTR    fe_Name            ;ptr to name
  191.     UBYTE    fe_Shown        ;entry hidden or shown ?
  192.     UBYTE    fe_Selected        ;0 = Not Selected, 1 = Selected
  193.     APTR    fe_NextShown        ;Next shown entry in list
  194.     APTR    fe_LastShown        ;Last shown entry in list
  195.   LABEL    fe_SIZEOF
  196.  
  197. fe_FileSize    EQU    fe_ImageData
  198.  
  199. ;    possible Pens
  200.  
  201. FILE_PEN    EQU    1    ;entry is a file, so use pen 1
  202. DIR_PEN        EQU     2    ;entry is a directory, so use pen 2
  203.  
  204. ;    possible Shown flags
  205.  
  206. ENTRY_HIDDEN    EQU    0    ;entry is not show in list
  207. ENTRY_SHOWN    EQU    1    ;entry is shown in list
  208.  
  209. ;    possible Selected flags
  210.  
  211. ENTRY_UNSEL    EQU    0    ;entry is not selected
  212. ENTRY_SEL    EQU    1    ;entry is selected
  213.  
  214.  
  215. ;    the VolEntry structure contains an entry of the volumes list
  216.  
  217.   STRUCTURE    VolEntry,0
  218.     APTR    vle_NextEntry        ;next entry in list
  219.     APTR    vle_LastEntry        ;last entry in list
  220.     APTR    vle_ImageData        ;ptr to imagedata of image to be displayed
  221.     UBYTE    vle_Pen            ;textcolor of entry (also type ID)
  222.     UBYTE    vle_Length        ;length of name
  223.     APTR    vle_Name            ;ptr to name with an added ":"
  224.   LABEL    vle_SIZEOF
  225.  
  226. ;    possible Pens
  227.  
  228. DEVICE_PEN    EQU    1    ;pen for devices like (DF0:, ...)
  229.                 ;pen for dirs (again 2)
  230. VOLUME_PEN    EQU    3    ;pen for volumes
  231.  
  232. ;
  233. ; The MRTime structure is needed to save the time of a message
  234. ;
  235.  
  236.   STRUCTURE MRTime,0
  237.     ULONG    mrti_Seconds    ; seconds part of the time
  238.     ULONG    mrti_Micros    ; micros part of the time
  239.   LABEL    mrti_SIZEOF
  240.  
  241. ;---------------------------------------------------------------------------
  242. ;
  243. ; The ReqBase is NOT the LibraryBase of multireq.library, it's a structure
  244. ; containing all temporary information needed by the FileRequester
  245. ; This structure is create by InitFileReq and setup with the values, but
  246. ; because of it's size and it's important information, the user gets the
  247. ; FileReq structure instead of this one.
  248. ;
  249. ;---------------------------------------------------------------------------
  250.  
  251.   STRUCTURE    ReqBase,0
  252.     APTR    rb_begSP        ;initial SP of FileReq
  253.     APTR    rb_readSP        ;initial SP of ReadProcess
  254.     APTR    rb_ReqKey        ;Key for AllocRemember
  255.     APTR    rb_ReqWin        ;ptr to FileReq-window
  256.     APTR    rb_rp            ;ptr to FileReq-window's RastPort
  257.     APTR    rb_FileReq        ;ptr to FileReq structure
  258.     APTR    rb_ActiveList        ;ptr to currently active list (1 or 2)
  259.  
  260.     APTR    rb_ReqPort        ;ptr to port of FileReq
  261.     APTR    rb_ReadPort        ;ptr to port of ReadProcess
  262.     APTR    rb_ReqMsg        ;ptr to mem for FileReq messages
  263.     APTR    rb_ReadMsg        ;ptr to mem for ReadProcess messages
  264.  
  265.     STRUCT    rb_CurrentVol,vle_SIZEOF    ;mem for current dir vol entry (always first)
  266.     APTR    rb_VolList              ;ptr to list with all volumes
  267.     APTR    rb_FirstVol             ;first shown volume
  268.     APTR    rb_LastVol              ;last shown volume
  269.     UWORD    rb_VolNum               ;number of volumes in list
  270.  
  271.     APTR    rb_VolKey        ;alloc key for volumes mem
  272.     APTR    rb_VolListPos        ;current pos in volumes mem
  273.     APTR    rb_VolListEnd        ;end of volumes mem
  274.  
  275.     UWORD    rb_ShownNum        ;number of files+dirs shown (not hidden!)
  276.     UWORD    rb_SelectedPos        ;pos of last selected entry (0 to 13)
  277.     APTR    rb_FirstFile        ;first shown entry in display
  278.     APTR    rb_LastFile        ;last shown entry in display
  279.  
  280.     APTR    rb_DrawerBuff        ;ptr to enough mem to work with drawer buffer
  281.     APTR    rb_UndoDrawerBuff    ;ptr to a undobuffer
  282.     STRUCT    rb_MsgTime,mrti_SIZEOF    ;for secs and micros of this message
  283.     STRUCT    rb_LastTime,mrti_SIZEOF    ;secs and micros of last message
  284.  
  285.                     ;the following part contains all gadgets
  286.  
  287.     STRUCT    rb_FilePropImage,ig_SIZEOF    ;the Image structures for the PropGadgets
  288.     STRUCT    rb_VolPropImage,ig_SIZEOF
  289.  
  290.     STRUCT    rb_ShowSInfo,si_SIZEOF    ;the StringInfo structures for the String-Gadget
  291.     STRUCT    rb_HideSInfo,si_SIZEOF
  292.     STRUCT    rb_DrawerSInfo,si_SIZEOF
  293.     STRUCT    rb_FileSInfo,si_SIZEOF
  294.  
  295.     STRUCT    rb_VolPInfo,pi_SIZEOF    ;the PropInfo structures for the Prop-Gadgets
  296.     STRUCT    rb_FilePInfo,pi_SIZEOF
  297.  
  298.     STRUCT    rb_CloseGadg,gg_SIZEOF    ;the gadgets itself
  299.     STRUCT    rb_DepthGadg,gg_SIZEOF
  300.     STRUCT    rb_InfoGadg,gg_SIZEOF
  301.     STRUCT    rb_SwitchGadg,gg_SIZEOF
  302.     STRUCT    rb_Copy12Gadg,gg_SIZEOF
  303.     STRUCT    rb_Copy21Gadg,gg_SIZEOF
  304.     STRUCT    rb_ShowGadg,gg_SIZEOF
  305.     STRUCT    rb_HideGadg,gg_SIZEOF
  306.     STRUCT    rb_ScanGadg,gg_SIZEOF
  307.     STRUCT    rb_StopGadg,gg_SIZEOF
  308.     STRUCT    rb_OkayGadg,gg_SIZEOF
  309.     STRUCT    rb_CancelGadg,gg_SIZEOF
  310.     STRUCT    rb_DrawerGadg,gg_SIZEOF
  311.     STRUCT    rb_FileGadg,gg_SIZEOF
  312.     STRUCT    rb_VolUpGadg,gg_SIZEOF
  313.     STRUCT    rb_VolDownGadg,gg_SIZEOF
  314.     STRUCT    rb_VolPropGadg,gg_SIZEOF
  315.     STRUCT    rb_ParentGadg,gg_SIZEOF
  316.     STRUCT    rb_FileUpGadg,gg_SIZEOF
  317.     STRUCT    rb_FileDownGadg,gg_SIZEOF
  318.     STRUCT    rb_FilePropGadg,gg_SIZEOF
  319.     STRUCT    rb_DragGadg,gg_SIZEOF
  320.   LABEL    rb_SIZEOF
  321.  
  322.  
  323. ;    The ReadMessage is used for communication between FileReq and ReadProcess
  324.  
  325.   STRUCTURE    ReadMessage,0
  326.     STRUCT    rdm_Node,LN_SIZE        ;a node as all message
  327.     APTR    rdm_ReplyPort
  328.     UWORD    rdm_Length        ;length is 10
  329.     UWORD    rdm_Command        ;message command
  330.     APTR    rdm_Data1        ;2 LONGS for datas to send
  331.     APTR    rdm_Data2
  332.   LABEL    rdm_SIZEOF
  333.  
  334. ;    Message Commands
  335.  
  336. MCD_NOP        EQU    0    ;do nothing
  337.  
  338. ;     msgs from FileReq to ReadProcess
  339.  
  340. MCD_READDIR    EQU    1    ; readin dir
  341. MCD_SCAN    EQU    2    ; same as read, but continues a stopped reading proc
  342. MCD_STOP    EQU    3    ; stop read in
  343. MCD_QUIT    EQU    4    ; quit ReadProcess, set DO_AUTOREAD, if still reading
  344.  
  345. ;     msgs from ReadProcess to FileReq
  346.  
  347. MCD_REDISPLAY    EQU    10    ; redisplay filelist (something changed)
  348. MCD_SIZEPROP    EQU    11    ; change size of PropGadget (another file read in)
  349. MCD_DONE    EQU    12    ; directroy totally read in
  350.  
  351. MCD_ERROR    EQU    13    ; 13 is a great number for an error, is it ??
  352. MCD_EXIT    EQU    14    ; only send before ReadProcess is going down
  353.                 ; cause FileReq is interested in me going down
  354.  
  355.     ENDC    ; MULTIREQ_PRIVATE
  356.  
  357.     ENDC    ; LIBRARIES_MULTIREQ_I
  358.